The present invention relates to data communication using a computer network. More particularly, the present invention relates to improved methods and apparatus for transmitting data among a plurality of computer systems.
The use of the transmission control protocol/internet protocol (TCP/IP) to facilitate the transmission of information between two or more computer systems via one or more networks is well known. When a given networked computer wishes to exchange information with another networked computer, a bi-directional data flow is established to allow information to be transmitted from one computer and received by the other computer. Generally speaking, the information is broken into packets to facilitate the transmission process. The TCP/IP protocol suite ensures that the information to be transferred is properly segmented and sent from the transmitting computer as packets, as well as properly received and assembled into the complete data file at the receiving computer.
As is well known, the transmission control protocol (TCP) corresponds to the transport layer (layer 4) of the OSI reference model. The transmission control protocol offers, among others, stream data transfer, multiplexing, full duplex operation, segmentation and reassembly, and efficient flow control. The internet protocol (IP) is a network layer (layer 3) protocol that provides, among others, addressing information and some control information that enables packets to be routed. The IP protocol has two primary responsibilities: providing connectionless, best-effort delivery of datagrams to a network, and providing fragmentation and reassembly of datagrams to support data links with different maximum transmission units (MTU) sizes. Together, these two protocols form the core of the internet protocol suite that enables reliable delivery of data via a network.
When two computers communicate via a computer network using the TCP/IP protocol, a data structure known as a transmission control block (TCB) is typically employed to facilitate data transmission, segmentation, reassembly, retransmission, acknowledgement, and the like of datagrams in the bi-directional data flow between the communicating computers. The TCB is employed to track various parameters associated with the data transmit and receive process for a given data flow. Generally speaking, there is one transmission control block per data flow at each host computer system (i.e., the computer system involved in the communication at each end of a data flow). Each TCB is uniquely identified by its TCP source port, TCP destination port, IP source address, and/or IP destination address.
In the prior art, a transmission control block in a host computer is employed, for a given data flow, to facilitate both the transmission of data from that host computer and the receiving of data into that host computer. FIG. 1 illustrates this situation wherein a TCB 102 is employed to facilitate both the transmission and the receiving of data for host computer 104. Likewise, a TCB 106 is employed to facilitate both the transmission and the receiving of data for host computer 108. However, if a transmission control block is busy servicing a transmission request in a host computer, it is unavailable for use to facilitate the receiving of data in that host computer until the transmit task is finished. Accordingly, a bottleneck exists which limits the transmission bandwidth between the two host computers.
If the data transmission speed between host computer 104 and host computer 108 is relatively low compared to the speed at which data is processed within the host computers, this bottleneck may be tolerable. As the transmission bandwidth between host computers increase, this bandwidth bottleneck increasingly becomes a critical issue. As bandwidth approaches 1 Gbits/sec, 10 Gbits/sec, or even higher for enterprise networking, and up to 40 Gbits/sec or higher among network routers, it is clear that the bandwidth bottleneck needs to be resolved if TCP/IP is to remain a viable protocol suite for networking going forward.
In view of the foregoing, there is desired improved methods and apparatus for relieving the bandwidth bottleneck associated with the prior art transmission control block and for improving the data transmission speeds when two or more computers communicate using the TCP/IP protocol via a computer network.
The invention relates, in one embodiment, to a method for transmitting transmit data associated with a bi-directional data flow between a first host computer and a second host computer. The first host computer and the second host computer are coupled via a computer network. The method includes ascertaining, from a first control block implemented in the first host computer and associated with the bi-directional data flow, a transmit window size parameter. The first control block is configured to track transmit-facilitating parameters employed for transmitting, using the TCP protocol, the transmit data associated with the bi-directional data flow. If the transmit window size parameter indicates that a transmit window is available to transmit at least a minimum segment size of the transmit data, the method includes tracking, using the first control block, a first portion of the transmit data in a retransmit queue, and preparing at least one TCP header for the first portion of the transmit data to facilitate transmitting of the first portion of the transmit data to the second host computer using the TCP protocol. The first portion of the transmit data represents an amount of transmit data that can be transmitted in view of the transmit window size parameter. In accordance with this embodiment of the invention, the first host computer is also configured to receive receive data associated with the bi-directional data flow from the second host computer simultaneously with the transmitting the first portion of the transmit data. The receive-facilitating parameters employed to facilitate receive of the receive data are tracked in a second control block at the same time that the transmit-facilitating parameters employed to transmit the transmit data are tracked in the first control block. The second control block is implemented in the first host computer and associated with the bi-directional data flow.
In another embodiment, the invention relates to a method for transmitting transmit data associated with a bi-directional data flow between a first host computer and a second host computer. The first host computer and the second host computer are coupled via a computer network. The method includes storing transmit-facilitating parameters employed for the transmitting the transmit data in a first control block. The first control block is implemented in the first host computer and associated with the bi-directional data flow. The transmitting the transmit data is performed in accordance with the TCP protocol. The method also includes employing the transmit-facilitating parameters in the first control block to facilitate servicing a transmit request pertaining to a given portion of the transmit data from the first host computer to the second computer. In accordance with this embodiment of the invention, the servicing the transmit request occurs simultaneously with servicing a receive request pertaining to receive data associated with the bi-directional data flow from the second host computer by the first host computer. The receive data is received using receive-facilitating parameters stored in a second control block implemented in the first host computer. The receive data is received in accordance with the TCP protocol.
In yet another embodiment, the invention relates to circuitries for facilitating data exchange via a network. The circuitries are associated with a first host computer coupled to a network. The network is coupled to a second host computer. The circuitries include means for storing transmit-facilitating parameters employed for transmitting transmit data associated with a bi-directional data flow from the first host computer to the second host computer. The transmit data is transmitted using the TCP protocol. The means for storing is implemented in the first host computer. The circuitries also include means for servicing a transmit request pertaining a given portion of the transmit data using the transmit-facilitating parameters. In accordance with this embodiment of the invention, the servicing the transmit request occurs simultaneously with servicing a receive request pertaining to receive data associated with the bi-directional data flow from the second host computer by the first host computer. The receive data is received using parameters tracked in means for storing receive-facilitating parameters. The means for storing receive-facilitating parameters is implemented in the first host computer. The receive data is received in accordance with the TCP protocol.
In yet another embodiment, the invention relates to circuitries for facilitating data exchange via a network. The circuitries are associated with a first host computer coupled to the network. The network is coupled to a second host computer. The circuitries include a first control block configured to store transmit-facilitating parameters employed for transmitting transmit data associated with a bi-directional data flow from the first host computer to the second host computer. The transmit data is transmitted using the TCP protocol. The first control block is implemented in the first host computer. The circuitries also include circuitry configured to service a transmit request pertaining a given portion of the transmit data using the transmit-facilitating parameters, wherein the servicing the transmit request occurs simultaneously with servicing a receive request pertaining to receive data associated with the bi-directional data flow from the second host computer by the first host computer. The receive data is received using parameters tracked in a second control block. The second control block is also implemented in the first host computer. The receive data is received in accordance with the TCP protocol.
These and other features of the present invention will be described in more detail below in the detailed description of the invention and in conjunction with the following figures.